home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / cprog / tdddconv.lha / ttdddlib.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-11-12  |  4.4 KB  |  162 lines

  1. /* ttdddlib.h - definitions needed to interface to TTDDD library
  2.  *            - written by Glenn M. Lewis - 7/19/91
  3.  * $Id: ttdddlib.h,v 1.10 1991/10/10 19:30:24 glewis Exp glewis $
  4.  */
  5.  
  6. #ifdef AMIGA
  7.  
  8. /* The following has been tested using SAS/C on an Amiga by Helge Rasmussen */
  9. #include <string.h>
  10. #include <stdlib.h>
  11. #define  bcopy(s,d,n)    (void)memcpy((d),(s),(n))
  12. #define  bzero(d,n)        (void)memset((d),0,(n))
  13. #define  bcmp(b1,b2,n)    memcmp((b1),(b2),(n))
  14. #define  index            strchr
  15. #define  rindex            strrchr
  16.  
  17. #else
  18.  
  19. #include <strings.h>
  20. #include <malloc.h>
  21. char *calloc();
  22.  
  23. #endif
  24.  
  25. #ifdef SYSV
  26. extern char *memcpy(), *memset();
  27. #define bcopy(s,d,n)    (void)memcpy((d),(s),(n))
  28. #define bzero(d,n)        (void)memset((d),0,(n))
  29. #define bcmp(b1,b2,n)    memcmp((b1),(b2),(n))
  30. #define index            strchr
  31. #define rindex            strrchr
  32. #endif
  33.  
  34. #ifndef UBYTE
  35. #define UBYTE unsigned char
  36. #endif
  37. #ifndef BYTE
  38. #define BYTE char
  39. #endif
  40.  
  41. #ifndef UWORD
  42. #define UWORD unsigned short
  43. #endif
  44. #ifndef WORD
  45. #define WORD short
  46. #endif
  47.  
  48. #ifndef ULONG
  49. #define ULONG unsigned long
  50. #endif
  51. #ifndef LONG
  52. #define LONG long
  53. #endif
  54.  
  55. typedef struct { double val[3]; } XYZ_st;
  56. typedef struct { UBYTE val[3];  } RGB_st;
  57. typedef struct { XYZ_st came, rota; double foca; } OBSV;
  58. typedef struct { double at, by; RGB_st to; } FADE;
  59. typedef struct { RGB_st hori, zeni; } SKYC;
  60. typedef char BRSH[81];
  61. typedef struct { XYZ_st tran, scal, rota1, rota2, rota3; } MTRX;
  62. typedef struct { XYZ_st xaxi, yaxi, zaxi; } AXIS;
  63. typedef struct { char path[19]; XYZ_st tran, rota, scal; UWORD info; } STRY;
  64. typedef struct {
  65.     MTRX mtrx;
  66.     char filename[81];
  67. } EXTR;
  68. typedef struct {
  69.     UBYTE type;
  70.     float indx;
  71. } MTTR;
  72. struct OBJECT {
  73.     EXTR *extr;    /* Either EXTR or DESC */
  74.     struct DESC *desc;
  75.     struct OBJECT *parent;    /* whose child this OBJECT is */
  76.     struct OBJECT *child;    /* children of this OBJECT - not for EXTR */
  77.     struct OBJECT *next;    /* At this level in the hierarchy */
  78.     void *user;        /* User-defined data for any purpose */
  79. };
  80. typedef struct OBJECT OBJECT;
  81. typedef struct DESC {
  82.     char name[19];
  83.     WORD *shap;
  84.     XYZ_st *posi;
  85.     AXIS *axis;
  86.     XYZ_st *size;
  87.     XYZ_st *pnts;
  88.     RGB_st *colr, *refl, *tran, *spc1;
  89.     UWORD *edge, *face, pcount, ecount, fcount; 
  90.     UBYTE *clst, *rlst, *tlst;
  91.     double *tpar;
  92.     UBYTE *surf;
  93.     MTTR  *mttr;
  94.     UBYTE *spec;
  95.     UBYTE *prp0, *prp1;
  96.     double *ints;
  97.     RGB_st *int1;
  98.     STRY *stry;
  99. } DESC;
  100.  
  101. extern UBYTE defclst[3], defrlst[3], deftlst[3], defspc1[3];
  102.  
  103. #define STNC BRSH
  104. #define TXTR BRSH
  105. typedef struct {
  106.     BRSH brsh[8];
  107.     STNC stnc[8];
  108.     TXTR txtr[8];
  109.     OBSV *obsv;
  110.     BYTE otrk[19];
  111.     STRY *ostr;
  112.     FADE *fade;
  113.     SKYC *skyc;
  114.     RGB_st *ambi;
  115.     BYTE *glb0;
  116. } INFO;
  117.  
  118. typedef struct {
  119.     INFO *info;            /* The INFO description in the file */
  120.     OBJECT *object;        /* The first object in the world */
  121.     void *user;        /* User-defined data for any purpose */
  122.     /* Some private variables needed to parse input file - don't touch! */
  123.     int num_OBJ, num_DESC, num_TOBJ, cur_line;
  124.     FILE *inp;
  125.     OBJECT *curobj;
  126. } WORLD;
  127.  
  128. typedef struct {
  129.     double minx, maxx, miny, maxy, minz, maxz;
  130. } MBB;
  131.  
  132. WORLD *read_World();    /* world = read_World(FILE *); ..figures out format */
  133. WORLD *read_TTDDD();    /* world = read_TTDDD(FILE *);      ...0 on failure */
  134. WORLD *read_TDDD();        /* world = read_TDDD(FILE *);       ...0 on failure */
  135. int write_TTDDD();        /* write_TTDDD(world *, FILE *);    ...0 on failure */
  136. int write_TDDD();        /* write_TDDD(world *, FILE *);     ...0 on failure */
  137. int write_Rayshade();    /* write_Rayshade(world *, FILE *); ...0 on failure */
  138. int write_PostScript();    /* write_PostScript(world *, FILE *, view); ..ditto */
  139. int write_MIF();        /* write_MIF(world *, FILE *, view); ..0 on failure */
  140. void calculate_MBB();    /* calculate_MBB(OBJECT *); */
  141. OBJECT *linear_morph();    /* linear_morph(obj1, obj2, time); /* 0.0<=time<=1.0 */
  142. OBJECT *create_object();/* p = create_object(); */
  143. int count_objects();    /* Used by "morph()" */
  144. int morph();            /* morph(world1, world2, num, name, morph_function); */
  145. void free_desc();        /* free_desc(DESC *); */
  146. void match_points();    /* match_points(numpoints, obj1, obj2); */
  147. void sort_points();        /* sort_points(obj1); */
  148. int cmpXYZ();            /* comparison for sort_points */
  149. void move_extr();
  150. void malloc_arrays();
  151. void OUT_MEM();
  152.  
  153. /* Some stuff for PostScript and MIF output */
  154. extern double XSIZE, YSIZE;    /* (in inches) Default: 8.5x11.0 */
  155.  
  156. #define VIEW_TOP    0    /* eye at (0,0,+inf) */
  157. #define VIEW_FRONT    1    /* eye at (0,-inf,0) */
  158. #define VIEW_ISO    2    /* eye at (+inf,-inf,+inf) */
  159. #define VIEW_RIGHT    3    /* eye at (+inf,0,0) */
  160. #define VIEW_ALL_FOUR 4    /* Place all on the same page */
  161.  
  162.